-- Haskore Live!
--
-- David Siegel <djsiegel@seas.upenn.edu>
-- Jonathan Coveney <jcoveney@wharton.upenn.edu>
--
-- Performer.hs
--

-- | Module 'Performer' defines the capabilities that a Performer must provide.
module Performer where

import Performance (Performance)

class Performer a where

    -- | Given a Performance, the Performer should play the Performance. The
    -- Performer should not return until the Performance has finished playing.
    perform :: a -> Performance -> IO ()

    -- | Initialize a Performer.
    init :: a -> IO ()
    init _ = return ()

    -- | Destory (clean up after) a Performer.
    destroy :: a -> IO ()
    destroy _ = return ()
    
